package com.javasm.service.goods.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.javasm.common.page.PageResult;
import com.javasm.domin.criteria.goods.GiftsToGoodsCriteria;
import com.javasm.domin.entity.goods.Activity;
import com.javasm.domin.entity.goods.GiftsToGoods;
import com.javasm.domin.entity.goods.GoodsAdjust;
import com.javasm.domin.vo.goods.GiftsToGoodsVo;
import com.javasm.domin.vo.goods.GoodsAdjustVo;
import com.javasm.mapper.goods.GiftsToGoodsMapper;
import com.javasm.service.base.impl.BaseServiceimpl;
import com.javasm.service.goods.IGiftsToGoodsService;
import com.javasm.transfer.goods.GiftsToGoodsTransfer;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;

import java.util.List;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author whl
 * @since 2022-01-16
 */
@Service
@Transactional
@RequiredArgsConstructor
public class GiftsToGoodsServiceImpl extends BaseServiceimpl<GiftsToGoods> implements IGiftsToGoodsService {

    private final GiftsToGoodsMapper giftsToGoodsMapper;
    private final GiftsToGoodsTransfer giftsToGoodsTransfer;

    @Override
    public PageResult<GiftsToGoodsVo> searchPage(GiftsToGoodsCriteria giftsToGoodsCriteria) {
        PageHelper.startPage(giftsToGoodsCriteria.getCurrentPage(), giftsToGoodsCriteria.getPageSize());
        LambdaQueryWrapper<GiftsToGoods> lambda = new QueryWrapper<GiftsToGoods>().lambda();

        if (!StringUtils.isEmpty(giftsToGoodsCriteria.getGiftsName())) {
            lambda.like(GiftsToGoods::getGiftsName, giftsToGoodsCriteria.getGiftsName());
        }
        if (!StringUtils.isEmpty(giftsToGoodsCriteria.getApproveStatus())) {
            lambda.eq(GiftsToGoods::getApproveStatus, giftsToGoodsCriteria.getApproveStatus());
        }
//        lambda.eq(GiftsToGoods::getApproveStatus,1&2);

        if (!StringUtils.isEmpty(giftsToGoodsCriteria.getGiftsColor())) {
            lambda.like(GiftsToGoods::getGiftsColor, giftsToGoodsCriteria.getGiftsColor());
        }
        if (!StringUtils.isEmpty(giftsToGoodsCriteria.getProductId())) {
            lambda.like(GiftsToGoods::getProductId, giftsToGoodsCriteria.getProductId());
        }
        if (!StringUtils.isEmpty(giftsToGoodsCriteria.getTypeId())) {
            lambda.like(GiftsToGoods::getTypeId, giftsToGoodsCriteria.getTypeId());
        }
        List<GiftsToGoods> giftsToGoods = giftsToGoodsMapper.selectList(lambda);
        PageInfo<GiftsToGoods> pageInfo = new PageInfo<>(giftsToGoods);
        List<GiftsToGoodsVo> goodsAdjustVos = giftsToGoodsTransfer.setInfo(giftsToGoods);
        return new PageResult<GiftsToGoodsVo>(pageInfo.getTotal(), goodsAdjustVos);
    }

    @Override
    public PageResult<GiftsToGoodsVo> searchPage1(GiftsToGoodsCriteria giftsToGoodsCriteria) {
        PageHelper.startPage(giftsToGoodsCriteria.getCurrentPage(), giftsToGoodsCriteria.getPageSize());
        LambdaQueryWrapper<GiftsToGoods> lambda = new QueryWrapper<GiftsToGoods>().lambda();

        if (!StringUtils.isEmpty(giftsToGoodsCriteria.getGiftsName())) {
            lambda.like(GiftsToGoods::getGiftsName, giftsToGoodsCriteria.getGiftsName());
        }
        lambda.eq(GiftsToGoods::getApproveStatus,0);
        if (!StringUtils.isEmpty(giftsToGoodsCriteria.getGiftsColor())) {
            lambda.like(GiftsToGoods::getGiftsColor, giftsToGoodsCriteria.getGiftsColor());
        }
        if (!StringUtils.isEmpty(giftsToGoodsCriteria.getProductId())) {
            lambda.like(GiftsToGoods::getProductId, giftsToGoodsCriteria.getProductId());
        }
        if (!StringUtils.isEmpty(giftsToGoodsCriteria.getTypeId())) {
            lambda.like(GiftsToGoods::getTypeId, giftsToGoodsCriteria.getTypeId());
        }
        List<GiftsToGoods> giftsToGoods = giftsToGoodsMapper.selectList(lambda);
        PageInfo<GiftsToGoods> pageInfo = new PageInfo<>(giftsToGoods);
        List<GiftsToGoodsVo> goodsAdjustVos = giftsToGoodsTransfer.setInfo(giftsToGoods);
        return new PageResult<GiftsToGoodsVo>(pageInfo.getTotal(), goodsAdjustVos);
    }
}
